1. Field of the Invention
This invention relates generally to programming of implantable devices, and more particularly to a programming system which addresses the dangers raised by the presence of multiple programming devices.
2. Description of the Related Art
Implantable devices have become a standard method of treating various medical conditions, many of which relate to the heart. Examples of implantable devices include pacemakers, defibrillators, nerve stimulators, drug delivery devices, and implanted personal identification chips. Many types of implantable devices are available with high capacity memories for storing data and various programmable configuration parameters. In the case of medical devices, the data to be stored may include physiological data such as the electrogram (electrical waveform of the heart detected at the electrodes), instantaneous heart rate, blood pressure, volume pumped, body temperature, etc. Configuration parameters that are stored may include modes of operation, amplifier sensitivity, filter bandwidth, adaptation algorithms, output voltages, currents and pulse widths, blanking periods, various pacing rates, circadian response patterns, lead characteristics, delay intervals, detection thresholds, safety margins, logging criteria, and error messages. As implantable devices increase in sophistication, the number of configuration parameters is also expected to increase.
Referring now to FIG. 1, a human torso 102 is shown having an implantable device 106 coupled to a heart 104. When a wand 108 from an external programming device 110 is placed in proximity to implantable device 106, the programming device 110 can establish two-way communication with implantable device 106 to retrieve data and to provide new configuration parameters. Often the device 106 collects data over a period of hours or days. In the case of a pacemaker, the data may represent measured physiological signals such as cardiac voltages (EKG signals), blood temperatures, oxygen levels, sugar levels, and other physical parameters.
Illustratively, the programming device 110 comprises an implantable device programmer and data analyzer that is used by a physician. The programmer/analyzer operates to download information stored in implantable device 106 by transmitting signals which place the pacer in a mode for downloading, and thereafter detecting signals sent by the device. Then, under control of the physician or other medical professional, the programmer/analyzer operates to analyze and display the information in a format which allows the physician to diagnose any problems. After performing an analysis, the physician may instruct the programmer/analyzer to adjust operating parameters for a different mode of operation, sensitivity setting, or other parameter value, to tailor the behavior of the device to the patient and thereby optimize the patient""s quality of life. If this is the case, the programmer/analyzer 10 provides new operating parameters to the implantable device 106.
Implant manufacturers have long been aware of a danger known as the xe2x80x9cmultiple programmerxe2x80x9d problem which can result in an implantable device having incorrect and perhaps even dangerous or harmful configuration parameters. The following scenario is presented to illustrate this problem.
A patient with an implantable device enters an examination room, and as part of a routine initial examination has a medical technician use a first programming device xe2x80x9cAxe2x80x9d to download data and configuration parameters from the implantable device. Depending on the amount of data and the baud rate of the device, the download time may range from 20 seconds to 20 minutes. In the absence of any gross abnormalities in the downloaded data, the patient is sent to another room for an exercise session to determine xe2x80x9crate modulatedxe2x80x9d settings, i.e. configuration parameters for adjusting the pacemaker pace rate in response to detecting patient exertion. In this room, a physician uses a second programming device xe2x80x9cBxe2x80x9d to download and adjust the configuration parameters in response to the results of the exercise session. Programming device xe2x80x9cBxe2x80x9d is used to reprogram the implantable device with the adjusted parameters. The patient then returns to the examination room, where a physician uses programming device xe2x80x9cAxe2x80x9d to adjust some of the configuration parameters in response to analysis of the downloaded data. Programming device xe2x80x9cAxe2x80x9d is then used to reprogram the implantable device with the adjusted parameters. It is important to note that programming device xe2x80x9cAxe2x80x9d is, at this point, operating with an obsolete version of the implant""s configuration settings. This situation occurs whenever changes are made to the implantable device""s configuration parameters by a second programming device xe2x80x9cBxe2x80x9d between the download and reprogramming operations of the first programming device xe2x80x9cAxe2x80x9d.
The configuration parameters of an implantable device such as a pacemaker can individually be set to typical values within a normal operating range, but the programming device must still check for incompatible parameter settings to avoid dangerous combinations of parameter values. For example, programming an inappropriately long refractory period in conjunction with a short pacing cycle may lead to unpredictable pacing behavior. If a programming device with an obsolete version of the implant device""s configuration settings reprograms only a few parameters, any safeguards that the programming device implements to avoid incompatible parameter settings could be unintentionally circumvented.
One programmer safeguard that has been employed is to have programming device xe2x80x9cAxe2x80x9d reprogram the implantable device with a complete set of configuration parameters rather than just the parameters which have been adjusted. Although this successfully prevents incompatible configuration settings, the previous adjustments are completely undone without any indication to the physician. Further, the reprogramming time is unnecessarily increased beyond what may be strictly necessary.
The solution commonly employed by implant manufacturers has been simply to issue warnings regarding the danger of using multiple programming devices. A more effective and inexpensive solution to the multiple programming device problem is desirable.
Accordingly, there is provided herein a multiprogrammer system for monitoring and optimizing implantable device performance. In one embodiment, the system includes at least two programming devices and an implantable device. Each of the programming devices may be used to perform inquiry and programming operations on the implantable device. In an inquiry operation, the programming device retrieves some or all of the configuration parameters from the implantable device. In a programming operation, the programming device provides one or more modified parameters to the implantable device. As part of the programming operation, the programming device is configured to verify that it is aware of the implantable device""s current parameters before sending the modified parameters. In other words, the current programming device verifies that the implantable device""s parameters have not been altered by another programming device since the current programming device""s last interaction with the implantable device. If the parameters have been altered, the current programming device aborts the programming operation and notifies the operator. In alternate embodiments, the verification may be performed by the implantable device, i.e. the implantable device may verify that the programming device is aware of the current device parameters before the implantable device accepts the modified parameters.
As part of the multiprogrammer system provided herein, there is disclosed a programming device embodiment, an implantable device embodiment, and various methods for verifying that the programming device has been provided with a current version of the implantable device""s configuration parameters. The programming device preferably comprises a user interface, a memory, a communications circuit, and a microprocessor. The communications circuit generally includes a communication coil, receive sensor, modulator, and demodulator, and is configurable to send and receive configuration parameters to and from the implantable device. The microprocessor couples to the user interface, the memory, and the communications circuit, and it operates under control of the user interface to retrieve configuration parameters from the implantable device and to store the parameters in memory. The configuration parameters may be modified, and the modified parameters can be sent to the implantable device. In certain disclosed embodiments, the microprocessor uses one of the following methods to verify that the stored configuration parameters are xe2x80x9ccurrentxe2x80x9d before sending the modified parameters, that is, the microprocessor verifies that the implantable device""s parameters have not been altered since this programmable device last retrieved the implantable device""s parameters.
The implantable device comprises a microprocessor coupled to a memory and a telemetry module. The memory stores configuration parameters, and the telemetry module transmits and receives external communications. The microprocessor performs some algorithm in a manner governed by the configuration parameters stored in the memory. In certain disclosed embodiments, the microprocessor uses one of the following methods to verify that an external programming device has received a current version of the configuration parameters before accepting modified configuration parameters from the programming device.
The disclosed methods for verifying that a programming device is aware of the implantable device""s current configuration parameters include: (1) providing a programming device serial number to the implantable device as part of every inquiry operation; (2) allowing a programming operation only within a predetermined time interval after an inquiry operation; (3) storing the date and time of the most recent inquiry operation; (4) storing the date and time of the most recent programming operation; and (5) retrieving the implantable device""s current parameters as part of every programming operation. For method (1), the implantable device or the programming device can be configured to compare the programming device""s serial number with the serial number of the last programming device to retrieve the implantable device""s configuration parameters. A match indicates that the programming device is aware of the implantable device""s current parameter values.
For method (2), the implantable device or the programming device can determine if the downloaded version of the configuration parameters has xe2x80x9cexpiredxe2x80x9d, that is, whether a predetermined amount of time has passed since the configuration parameters were last retrieved. For method (3), the implantable device or programming device can be configured to compare the date and time of the most recent inquiry stored in the programming device to that stored in the implantable device. A match indicates that the programming device is aware of the implantable device""s current parameter values.
Similarly, for method (4), the implantable device or programming device can be configured to compare the date and time of the most recent programming operation stored in the programming device to that stored in the implantable device. Finally, for method (5), the programming device can be configured to retrieve the implantable device""s configuration parameters immediately prior to a programming operation to verify that the programming device has a current version. These methods will be described in more detail further below.